package Day18.BufferedStream;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day18.BufferedStream
 * @Author:hyhWTX
 * @ClassName:Demo04BufferedReader
 * @CreateTime:2022年-09月-20日 19:25
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 *java.io.BufferedReader extends Reader
 * 继承自父类的共性成员方法:
 *   int read(读取单个字符并返回。
 *   int read() char(cbuf一次读取多个字符,将字符读入数组。
 *   void close() 关闭该流并释放与之关联的所有资源。
 *构造方法:
 *      BufferedReader(Reader in)创建一个使用默认大小输入缓冲区的缓冲字符输入流。
 *      BufferedReader(Reader in， int sz)创建一个使用指定大小输入缓冲区的缓冲字符输入流。
 *      参数:
 *              Reader in:字行输入流
 *                      我们可以传递FileReader,缓冲流会给FileReader增加一个缓冲区,提高FileReader的读取效率
 *      特有的成员方法:
 *          String readLine(读取一个文本行。读取一行数据
 *                  行的终止符号:通过下列字符之一即可认为某行已终止:换行("\n ')、回车（'\r'）或回车后直接跟看换行(\rln)。
 *          返回值:
 *              包含该行内容的字符串,不包含任何行终止符，如果已到达流末尾，则返回null
 *
 *           使用步骤:
 *              1.创建字符缓冲输入流对象.,构造方法中传递字符输入流
 *              2.使用字行缓冲徐入流对象中的方法read/ readLine读取文本
 *              3.释放资源
 */

public class Demo04BufferedReader {
    public static void main(String[] args) throws IOException {
        //1.创建字符缓冲输入流对象.,构造方法中传递字符输入流
        BufferedReader br = new BufferedReader(new FileReader("D:\\java黑马\\src\\Day18\\BufferedStream\\c.txt"));
        //2.使用字行缓冲徐入流对象中的方法read/readLine读取文本
//        //读取一行
//        String line = br.readLine();
//        System.out.println(line);
        /**
         *发现头上读取多次是一个重复的过程,所以可以使用循环优化
         * 不知道文件中有多少行数据,所以使用while循环
         * while的结束条件,读吸到null结束
         */
        String line;
        while ((line = br.readLine())!=null){
            System.out.println(line);
        }

        //3.释放资源
        br.close();
    }
}
